Co ve FB nejde...

Otázka od: delphi@hon.cz

18. 11. 2004 10:04

Ahoj..

mejme nasledujici problem. Uzivatel by mel mit moznost
zobrazit tabulku o libovolnem poctu sloupcu. Neuvazuji o ceste
menit metadata, musim na to jinak. Tabulky vypadaji napr. takto:


CREATE TABLE DENIK (
    ID INTEGER,
    DATUM TIMESTAMP,
    TEXT VARCHAR (64),
    CASTKA DECIMAL (8, 2),
    SLOUPEC INTEGER);

CREATE TABLE DENIK_SLOUPCE (
    ID INTEGER NOT NULL,
    TEXT VARCHAR (20) CHARACTER SET WIN1250 COLLATE PXW_CSY,
    TYP VARCHAR (1) CHARACTER SET WIN1250 DEFAULT 'A' COLLATE WIN1250,
    DANOVY VARCHAR (1) CHARACTER SET WIN1250 DEFAULT 'A' COLLATE PXW_CSY);

INSERT INTO DENIK (ID, DATUM, TEXT, CASTKA, SLOUPEC) VALUES (1,
'11/15/2004', 'AaA', 100, 1);
INSERT INTO DENIK (ID, DATUM, TEXT, CASTKA, SLOUPEC) VALUES (2,
'11/15/2004', 'bbb', 250, 3);

INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (1, 'Prijmy
danove',
'P', 'A');
INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (3, 'Vydaje
danove',
'V', 'A');
INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (2,
'Prijmy
nedanove', 'P', 'N');
INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (4,
'Vydaje
nedanove', 'V', 'N');


A ja potrebuji vysledek


TEXT Prijmy danove Vydaje danove Prijmy nedanove Vydaje
nedanove
--------------------------------------------------------------------------------
----------------------
AaA 100
bbb 250



V MS SQL bych na to sel tak, ze si udelam docasnou tabulku a pak ji v SP
vytvoril a naplnil daty.
V FB takto ulozene SP nepracuji a je nutno (ma/li to byt SP vracejici vice
radku) mit presne definovany
navratove hodnoty coz neni mozne, kdyz se ma pocet sloupcu menit.
Ma nekdo nejaky napad? Neco co jsem v dokumentaci prehlidl?

Dik

Martin


Odpovedá: Rostislav Lekes

18. 11. 2004 12:17

Ahoj, jde to zmastit pomoci vnoreneho cyklu FOR SELECT DO, ale vracelo by to
slozene stringy pro kazdy record (tzn 1 navratovy parametr), a ten
string bys musel rozsekat az na clientovi. Takove reseni je samozrejmne
kravina. Jednodussi a rychlejsi = nacti ciselnik zahlavi samostatnym dotazem
a
vnitrnosti tabulky druhym, ten vysledny report nebo dataset uz z toho
poskladas ... Jde to cele nacist i jednim dotazem (join) , ale budes
zbytecne tahat
duplicitni data a stejne to budes muset na clientovi prezvykat ....
Rosta

----- Original Message -----
From: <delphi@hon.cz>
To: <delphi-l@clexpert.cz>
Sent: Thursday, November 18, 2004 9:50 AM
Subject: Co ve FB nejde...


> Ahoj..
>
> mejme nasledujici problem. Uzivatel by mel mit moznost
> zobrazit tabulku o libovolnem poctu sloupcu. Neuvazuji o ceste
> menit metadata, musim na to jinak. Tabulky vypadaji napr. takto:
>
>
> CREATE TABLE DENIK (
> ID INTEGER,
> DATUM TIMESTAMP,
> TEXT VARCHAR (64),
> CASTKA DECIMAL (8, 2),
> SLOUPEC INTEGER);
>
> CREATE TABLE DENIK_SLOUPCE (
> ID INTEGER NOT NULL,
> TEXT VARCHAR (20) CHARACTER SET WIN1250 COLLATE PXW_CSY,
> TYP VARCHAR (1) CHARACTER SET WIN1250 DEFAULT 'A' COLLATE WIN1250,
> DANOVY VARCHAR (1) CHARACTER SET WIN1250 DEFAULT 'A' COLLATE PXW_CSY);
>
> INSERT INTO DENIK (ID, DATUM, TEXT, CASTKA, SLOUPEC) VALUES (1,
> '11/15/2004', 'AaA', 100, 1);
> INSERT INTO DENIK (ID, DATUM, TEXT, CASTKA, SLOUPEC) VALUES (2,
> '11/15/2004', 'bbb', 250, 3);
>
> INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (1,
'Prijmy
> danove', 'P', 'A');
> INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (3,
'Vydaje
> danove', 'V', 'A');
> INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (2,
'Prijmy
> nedanove', 'P', 'N');
> INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (4,
'Vydaje
> nedanove', 'V', 'N');
>
>
> A ja potrebuji vysledek
>
>
> TEXT Prijmy danove Vydaje danove Prijmy nedanove
Vydaje
> nedanove
> --------------------------------------------------------------------------
----------------------------
> AaA 100
> bbb 250
>
>
>
> V MS SQL bych na to sel tak, ze si udelam docasnou tabulku a pak ji v SP
> vytvoril a naplnil daty.
> V FB takto ulozene SP nepracuji a je nutno (ma/li to byt SP vracejici vice
> radku) mit presne definovany
> navratove hodnoty coz neni mozne, kdyz se ma pocet sloupcu menit.
> Ma nekdo nejaky napad? Neco co jsem v dokumentaci prehlidl?
>
> Dik
>
> Martin
>
>
>
>
>
>


Odpovedá: delphi@hon.cz

18. 11. 2004 13:05

Ahoj,
ten prvni napad je v necem zajimavy....
ale abstrahujme od zahlavi, rekneme, ze jej nepotrebuji.
Ja spis potrebuji to "telo" tabulky a chci aby to bylo
vysledkem view nebo SP ne ze to budu muset jeste
"dozvykavat" v nejakem zobrazovaci. Spis mi jde o
cistotu reseni.

Martin


----- Original Message -----
> Ahoj, jde to zmastit pomoci vnoreneho cyklu FOR SELECT DO, ale vracelo by
> to
> slozene stringy pro kazdy record (tzn 1 navratovy parametr), a ten
> string bys musel rozsekat az na clientovi. Takove reseni je samozrejmne
> kravina. Jednodussi a rychlejsi = nacti ciselnik zahlavi samostatnym
> dotazem
> a
> vnitrnosti tabulky druhym, ten vysledny report nebo dataset uz z toho
> poskladas ... Jde to cele nacist i jednim dotazem (join) , ale budes
> zbytecne tahat
> duplicitni data a stejne to budes muset na clientovi prezvykat ....
> Rosta
>


Odpovedá: Milan Tomes

18. 11. 2004 13:15

No mam obavu, ze budes jen velice tezko hledat nejaky nativni postup, kterym
bys ziskal cross-table. To je totiz tak specificka zalezitost, ze s tim
relacni DB nativne vubec nepocitaji. Ja to vidim tak, ze budes muset
vytahnout pozadovane sloupce pres jednotlive dotazy. Nenapada me zadny jiny
postup - SP ani View tohle nezvladnou.

Za velice "fuj fuj" reseni povazuji vytvoreni SP/View pri aktualizaci
ciselniku, ktery urcuje sloupce te tabulky...  

S pozdravem

Milan Tomes

> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of delphi@hon.cz
> Sent: Thursday, November 18, 2004 1:05 PM
>
> ten prvni napad je v necem zajimavy....
> ale abstrahujme od zahlavi, rekneme, ze jej nepotrebuji.
> Ja spis potrebuji to "telo" tabulky a chci aby to bylo
> vysledkem view nebo SP ne ze to budu muset jeste
> "dozvykavat" v nejakem zobrazovaci. Spis mi jde o
> cistotu reseni.
>
> ----- Original Message -----
> > Ahoj, jde to zmastit pomoci vnoreneho cyklu FOR SELECT DO, ale
> vracelo by
> > to
> > slozene stringy pro kazdy record (tzn 1 navratovy parametr), a ten
> > string bys musel rozsekat az na clientovi. Takove reseni je samozrejmne
> > kravina. Jednodussi a rychlejsi = nacti ciselnik zahlavi samostatnym
> > dotazem
> > a
> > vnitrnosti tabulky druhym, ten vysledny report nebo dataset uz z toho
> > poskladas ... Jde to cele nacist i jednim dotazem (join) , ale budes
> > zbytecne tahat
> > duplicitni data a stejne to budes muset na clientovi prezvykat ....
> > Rosta
> >
>
>
>
>


Odpovedá: petr palicka

18. 11. 2004 13:19

Ahoj,

   imho narazis na zasadni problem a to je ze v okamziku zadavani
"univerzelniho" dotazu nevis, kolik bude sloupcu a jake budou jejich nazvy.
   mozna by pomohlo nadefinovat podrizenou tabulku spis jako sloupec
typu pole:
radekid...
sloupce_nazvy pole hodnot
sloupce hodnoty pole hodnot
...

   dalsi moznost je selektit klasicky joinem po radcich a na klientovi
prehazet do gridu. kdysy byvala v delphi komponenta na datovou kostku,
nevim, jestli by nesla pouzit, nebo napsat podobnou vlastni.

peca


Odpovedá: petr palicka

18. 11. 2004 13:32

Milan Tomes wrote:

> Za velice "fuj fuj" reseni povazuji vytvoreni SP/View pri aktualizaci
> ciselniku, ktery urcuje sloupce te tabulky...  

Hele, ale to neni uplne blbej napad, jen ho trochu rozvest. Ja jsem
potreboval delat exporty pro sync dvou gdb a delal jsem si "docasne"
externi tabulky.

Tady bych to videl podobne. Zjistit dotazem sloupce, vzit ID z
generatoru a zalozit view s nazem doplnenym o to ID a potrebnymi sloupci
a omezenim atp. Pak dotazovat to view a jakmile uz neni potreba, tak ho
dropnout.

Peca


Odpovedá: delphi@hon.cz

18. 11. 2004 13:58

Ano, je to de facto cross-tab. Jsem krucek od uspechu,
ale dalsi krok uz nebude. Skutecne v FB nelze v MS-SQL
to pomoci temporary tables jde....

Zde je me reseni, ktere vraci SQL dotaz ve vysledku ten
lze pouzit k vytvoreni dotazu, ktery pak vrati tabulku tak
jak ji potrebuji.....


CREATE PROCEDURE SP_DENIK
RETURNS (
    CISLO INTEGER,
    VYSLEDEK VARCHAR (4096))
AS

declare variable DOTAZ varchar(4096);
declare variable SLOUPEC_ID integer;
declare variable SLOUPEC integer;
declare variable SLOUPCU integer;
declare variable c integer;
declare variable i integer;
declare variable DUMMY varchar(4096);



BEGIN

  /* zjistim, kolik je sloupcu */
select count(*) from denik_sloupce into :sloupcu;

dotaz = '';
c = 1;


  /* pro kazdy sestavim dotaz */
for select id from denik_sloupce
     order by id
    into :sloupec_id do begin

    dummy = '';
    i = 1;
    while (i <= sloupcu) do begin
          if (i = c) then begin
             dummy = dummy || ' DENIK_SLOUPCE.TEXT ';
             end else begin
             dummy = dummy || ' CAST('' '' as varchar(20)) ';
             end

          i = i + 1;
          if (i<=sloupcu) then dummy = dummy || ', ';
          end

    dotaz = dotaz || 'SELECT '
                  || dummy
                  || 'from denik_sloupce '
                  || 'where denik_sloupce.id = '
                  || sloupec_id;

    if (c < :sloupcu) then dotaz = dotaz || ' union ';
    c = c + 1;
    cislo = :sloupec_id;
    vysledek = :dotaz;
    end

SUSPEND;

-- for execute statement :dotaz into :vysledek do suspend;


END


jinymi slovy delam vicekrat union....Co vy na to?

Martin








----- Original Message -----
> No mam obavu, ze budes jen velice tezko hledat nejaky nativni postup,
> kterym
> bys ziskal cross-table. To je totiz tak specificka zalezitost, ze s tim
> relacni DB nativne vubec nepocitaji. Ja to vidim tak, ze budes muset
> vytahnout pozadovane sloupce pres jednotlive dotazy. Nenapada me zadny
> jiny
> postup - SP ani View tohle nezvladnou.
>
> Za velice "fuj fuj" reseni povazuji vytvoreni SP/View pri aktualizaci
> ciselniku, ktery urcuje sloupce te tabulky...  


Odpovedá: Rostislav Lekes

18. 11. 2004 13:59

To s temi stringy se da pouzit, v nekolika pripadech to pouzivame,
ale je to krajni reseni, protoze je pomale ... Jestli chces poslat vzor,
dej vedet.
Pokud nutne potrebujes
na vystupu ze SP to co popisujes, FB to asi nebude umet normalni
cestou, mozna by to slo nejakou straslivosti jako za behu dynamicky
vytvorit TABLE podle potreby (asi zasahy do systemovych tabulek  )
a teprve z ni cist, ale to rozhodne neni ciste reseni ....

Rosta

BTW: temp table v MS SQL je 'pozustatek' SYBASE a muj
soukr nazor je obejit se bez nich. Ne ze by nefungovaly, ale
prehlednost a vetsinou i rychlost se z toho da dostat bez nich ...


> Ahoj,
> ten prvni napad je v necem zajimavy....
> ale abstrahujme od zahlavi, rekneme, ze jej nepotrebuji.
> Ja spis potrebuji to "telo" tabulky a chci aby to bylo
> vysledkem view nebo SP ne ze to budu muset jeste
> "dozvykavat" v nejakem zobrazovaci. Spis mi jde o
> cistotu reseni.
>
> Martin


Odpovedá: Milan Tomes

18. 11. 2004 13:42

No samozrejme je to reseni, ALE:

1. Vubec se mi nelibi modifikace metadat databaze pri behu programu. To
totiz zajiste drive nebo pozdeji zpusobi problemy pri soucasnem pozadavku
uzivatele na vytvoreni / zruseni view. Jedine reseni spociva v tom, ze
ciselnik resp. jeho editace je pristupna pouze a jen administratorovi
systemu a po commitu zmeny se vytvori i novy view. Nicmene, protoze DDL
nelze pouzit uvnitr triggeru nebo SP, tak zase vznika problem pripadneho
padu aplikace mezi commitem zmeny a vytvorenim view.
2. Pokud bude view vytvaren administratorem, tak se pravdepodobne stejne
stane situace, kdy zrovna v okamziku dropovani view chce uzivatel tento view
pouzit v selectu.

RESUME: Vyresit jinak - tohle reseni je vhodne jen pokud presne znas
podminky nasazeni (coz ovsem neznas nikdy a u nikoho  . Uz jen to,
zajistit vsechny podminky pro predejiti pripadne kolizi znamena tolik prace,
ze se vlastne vubec nevyplati a je mnohem jednodussi a tim casove mene
narocne, napsat to nekolika dotazy.

S pozdravem

Milan Tomes

P.S.: Proc to vlastne chces dostat z jedine SP/View ???

> [mailto:delphi-l-owner@clexpert.cz]On Behalf Of petr palicka
> Sent: Thursday, November 18, 2004 1:31 PM
>
> Milan Tomes wrote:
>
> > Za velice "fuj fuj" reseni povazuji vytvoreni SP/View pri aktualizaci
> > ciselniku, ktery urcuje sloupce te tabulky...  
>
> Hele, ale to neni uplne blbej napad, jen ho trochu rozvest. Ja jsem
> potreboval delat exporty pro sync dvou gdb a delal jsem si "docasne"
> externi tabulky.
>
> Tady bych to videl podobne. Zjistit dotazem sloupce, vzit ID z
> generatoru a zalozit view s nazem doplnenym o to ID a potrebnymi sloupci
> a omezenim atp. Pak dotazovat to view a jakmile uz neni potreba, tak ho
> dropnout.
>
> Peca
>
>
>


Odpovedá: Rostislav Lekes

18. 11. 2004 14:19

Hezke a verim ze funguje, jenom to ma dva hacky  
1/ pouze FB 1.5 ale to asi nevadi
2/ delka stringu, kterou predem nemuzes vedet ...... a to je dost velky
problem
    zadny string neni dost velky .... Navic pozor na pouzite komponenty, u
nekterych
   je string omezen klidne jenom na 512 znaku (nektere verze ZEOS urcite),
navic
  takovym stylem, ze se neobtezuji oznamit chybu a string proste ustrihnou
 
Utec z toho pouzitim vice dotazu, jak ti tu radi chytrejsi nez ja ....

Rosta

PS: Jeden record z tve tabulky bude minimalne nejakych 10 znaku, ale asi
spis vic.
      To je 400 recordu a to neni na pokladni knihu nic moc. Kdyz si das
praci, tak
      se ti to mozna podari rozchodit na 32k delky, ale to je na db taky
malo ....

----- Original Message -----
From: <delphi@hon.cz>
To: <delphi-l@clexpert.cz>
Sent: Thursday, November 18, 2004 1:31 PM
Subject: Re: Co ve FB nejde...


> Ano, je to de facto cross-tab. Jsem krucek od uspechu,
> ale dalsi krok uz nebude. Skutecne v FB nelze v MS-SQL
> to pomoci temporary tables jde....
>
> Zde je me reseni, ktere vraci SQL dotaz ve vysledku ten
> lze pouzit k vytvoreni dotazu, ktery pak vrati tabulku tak
> jak ji potrebuji.....
>
>
> CREATE PROCEDURE SP_DENIK
> RETURNS (
> CISLO INTEGER,
> VYSLEDEK VARCHAR (4096))
> AS
>
> declare variable DOTAZ varchar(4096);
> declare variable SLOUPEC_ID integer;
> declare variable SLOUPEC integer;
> declare variable SLOUPCU integer;
> declare variable c integer;
> declare variable i integer;
> declare variable DUMMY varchar(4096);
>
>
>
> BEGIN
>
> /* zjistim, kolik je sloupcu */
> select count(*) from denik_sloupce into :sloupcu;
>
> dotaz = '';
> c = 1;
>
>
> /* pro kazdy sestavim dotaz */
> for select id from denik_sloupce
> order by id
> into :sloupec_id do begin
>
> dummy = '';
> i = 1;
> while (i <= sloupcu) do begin
> if (i = c) then begin
> dummy = dummy || ' DENIK_SLOUPCE.TEXT ';
> end else begin
> dummy = dummy || ' CAST('' '' as varchar(20)) ';
> end
>
> i = i + 1;
> if (i<=sloupcu) then dummy = dummy || ', ';
> end
>
> dotaz = dotaz || 'SELECT '
> || dummy
> || 'from denik_sloupce '
> || 'where denik_sloupce.id = '
> || sloupec_id;
>
> if (c < :sloupcu) then dotaz = dotaz || ' union ';
> c = c + 1;
> cislo = :sloupec_id;
> vysledek = :dotaz;
> end
>
> SUSPEND;
>
> -- for execute statement :dotaz into :vysledek do suspend;
>
>
> END
>
>
> jinymi slovy delam vicekrat union....Co vy na to?
>
> Martin



Odpovedá: Richard Kejval

19. 11. 2004 8:58


----- Original Message -----
From: <delphi@hon.cz>


> Ahoj..
>
> mejme nasledujici problem. Uzivatel by mel mit moznost
> zobrazit tabulku o libovolnem poctu sloupcu. Neuvazuji o ceste
> menit metadata, musim na to jinak. Tabulky vypadaji napr. takto:
>

Nevim, jestli Ti toto reseni bude vyhovovat, ale my to resime tak, ze

1. krok udelam proceduru, kde hodnoty sloupcu, kdy neznas pocet
   zapisujem do radku a k tomu pridame nazev hodnoty a pripadne
   typ :
   napr:. Field_Name Field_Value Field_Type
             Pole_1 1 ftInteger
             Pole_2 '2' ftString
              .
              .
             Pole_n n ftInteger

2. Pouziti nejakeho MemTable, kde v runtimu, vytvorim jednotlive fieldy
podle typu a hodnoty z radku z procedury prevedem do sloupcu MemTable

S pozdravem
ing. Richard Kejval
mobil: 602477679
http://www.icsoftware.cz


Odpovedá: delphi@hon.cz

19. 11. 2004 11:42

No vida, kolik se seslo vtipnych reseni. Nicmene mi
jde o to, abych mohl vysledek videt v jakemkoli
SQL editoru nebo jeste lepe, chci oddelit datovy vystup
od jeho zobrazovani a celou problematiku zobecnit
(duvod je, ze se chci neco naucit, ne ze to budu zitra
programovat).

Martin


----- Original Message -----
> Nevim, jestli Ti toto reseni bude vyhovovat, ale my to resime tak, ze
>
> 1. krok udelam proceduru, kde hodnoty sloupcu, kdy neznas pocet
> zapisujem do radku a k tomu pridame nazev hodnoty a pripadne
> typ :
> napr:. Field_Name Field_Value Field_Type
> Pole_1 1 ftInteger
> Pole_2 '2' ftString
> .
> .
> Pole_n n ftInteger
>
> 2. Pouziti nejakeho MemTable, kde v runtimu, vytvorim jednotlive fieldy
> podle typu a hodnoty z radku z procedury prevedem do sloupcu MemTable


Odpovedá: Ing. Miroslav Vopalecky

20. 11. 2004 12:31

Ahoj.

Jestli jsem dobre pochopil jedna se o zobrazeni libovolne tabulky ve
formulari. Pokud je tomu tak staci nedefinovat do formulare DBgrid a
DBnavigator. DBGrid zobrazi libovolne sloupce, pokud mu nejou vyplneny
sloupce natvrdo. A jako data pouzit libovolny datovy zdroj a SQL prikaz
navazany na datovy zdroj, ktery zobrazi co se ma zobrazit. Vse se pak da
menit jen zmenou datoveho zdroje a prekreslenim DBGridu. Problem je v tom,
ze SQL prikazy nemusi fungovat stejne nad jednotlivymi databazemi. Skladbu
SQL prikazu je nutno udelat na zaklade znalosti datoveho providera. To co
funguje pod FB nefunguje pod MSSQL (a tedy i Access).

S pozdravem Mirek Vopalecky, D7 W2000

|-----Original Message-----
|From: delphi-l-owner@clexpert.cz
|[mailto:delphi-l-owner@clexpert.cz] On Behalf Of delphi@hon.cz
|Sent: Thursday, November 18, 2004 9:51 AM
|To: delphi-l@clexpert.cz
|Subject: Co ve FB nejde...
|
|
|Ahoj..
|
|mejme nasledujici problem. Uzivatel by mel mit moznost
|zobrazit tabulku o libovolnem poctu sloupcu. Neuvazuji o ceste
|menit metadata, musim na to jinak. Tabulky vypadaji napr. takto:
|
|
|CREATE TABLE DENIK (
| ID INTEGER,
| DATUM TIMESTAMP,
| TEXT VARCHAR (64),
| CASTKA DECIMAL (8, 2),
| SLOUPEC INTEGER);
|
|CREATE TABLE DENIK_SLOUPCE (
| ID INTEGER NOT NULL,
| TEXT VARCHAR (20) CHARACTER SET WIN1250 COLLATE PXW_CSY,
| TYP VARCHAR (1) CHARACTER SET WIN1250 DEFAULT 'A' COLLATE WIN1250,
| DANOVY VARCHAR (1) CHARACTER SET WIN1250 DEFAULT 'A'
|COLLATE PXW_CSY);
|
|INSERT INTO DENIK (ID, DATUM, TEXT, CASTKA, SLOUPEC) VALUES
|(1, '11/15/2004', 'AaA', 100, 1); INSERT INTO DENIK (ID,
|DATUM, TEXT, CASTKA, SLOUPEC) VALUES (2, '11/15/2004', 'bbb', 250, 3);
|
|INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (1,
|'Prijmy danove', 'P', 'A'); INSERT INTO DENIK_SLOUPCE (ID,
|TEXT, TYP, DANOVY) VALUES (3, 'Vydaje danove', 'V', 'A');
|INSERT INTO DENIK_SLOUPCE (ID, TEXT, TYP, DANOVY) VALUES (2,
|'Prijmy nedanove', 'P', 'N'); INSERT INTO DENIK_SLOUPCE (ID,
|TEXT, TYP, DANOVY) VALUES (4, 'Vydaje nedanove', 'V', 'N');
|
|
|A ja potrebuji vysledek
|
|
|TEXT Prijmy danove Vydaje danove Prijmy
|nedanove Vydaje
|nedanove
|---------------------------------------------------------------
|---------------------------------------
|AaA 100
|bbb 250
|
|
|
|V MS SQL bych na to sel tak, ze si udelam docasnou tabulku a
|pak ji v SP vytvoril a naplnil daty. V FB takto ulozene SP
|nepracuji a je nutno (ma/li to byt SP vracejici vice
|radku) mit presne definovany
|navratove hodnoty coz neni mozne, kdyz se ma pocet sloupcu
|menit. Ma nekdo nejaky napad? Neco co jsem v dokumentaci prehlidl?
|
|Dik
|
|Martin